package com.study.retrofitrealize;

/**
 * 作者： zjf 10/7/20 4:16 PM
 * 参考：
 * 描述：保存解析的方法参数的注解的值
 */
public abstract class ParameterStore {
    abstract void apply(ClassMethod classMethod, String value);

    /**
     * GET请求的参数数据
     */
    public static class QueryParameterStore extends ParameterStore {
        String key;

        public QueryParameterStore(String key) {
            this.key = key;
        }

        @Override
        void apply(ClassMethod classMethod, String value) {
            classMethod.addQueryParameter(key, value);
        }
    }

    /**
     * POST请求的参数数据
     */
    public static class FieldParameterStore extends ParameterStore {
        String key;

        public FieldParameterStore(String key) {
            this.key = key;
        }

        @Override
        void apply(ClassMethod classMethod, String value) {
            classMethod.addFieldParameter(key, value);
        }
    }
}
